EDA - EXPLORATORY DATA ANALYSIS

Squad: 1 - Pyoneers¶

1 - PREPARACAO INICIAL DOS DADOS¶

In [1]:
import pandas as pd
import numpy as np
import seaborn as sns
from datetime import datetime
from matplotlib import pyplot as plt
from pandas_profiling import ProfileReport
from plotly import express as px
from datetime import datetime as dt
import json
In [2]:
# Lendo a base de dados.

data_in = pd.read_csv('../data/raw/data_regiao_hidro.csv', header=[0])
In [3]:
# Lendo arquivo com o formato das regioes hidrograficas

with open('../data/raw/bacias_hidro.json') as file:
    baciasCE = json.load(file)
In [4]:
# Gerando um dataframe com a base de dados.

df = pd.DataFrame(data_in)
In [5]:
df.head()
Out[5]:
data posicao pr divergencia umidade vento_vertical vorticidade fluxo_energia EMI nino3 atn ats atlgrad atl3 seta nesta regiao_hidro
0 1981-01-01 (-4.75, -39.25) 68.92 -0.000003 74.14 -0.01 0.000007 93.54 0.49 -0.63 0.28 -0.22 0.5 -0.32 -0.21 0.14 Bacia_Metropolitana
1 1981-01-01 (-4.75, -39.0) 59.98 -0.000004 73.94 -0.02 0.000008 120.53 0.49 -0.63 0.28 -0.22 0.5 -0.32 -0.21 0.14 Bacia_Metropolitana
2 1981-01-01 (-4.75, -38.75) 54.32 -0.000004 73.52 -0.03 0.000011 75.55 0.49 -0.63 0.28 -0.22 0.5 -0.32 -0.21 0.14 Bacia_Metropolitana
3 1981-01-01 (-4.75, -38.5) 34.91 -0.000004 73.19 -0.02 0.000014 24.54 0.49 -0.63 0.28 -0.22 0.5 -0.32 -0.21 0.14 Bacia_Metropolitana
4 1981-01-01 (-4.5, -39.0) 60.35 -0.000003 74.28 0.07 0.000006 81.54 0.49 -0.63 0.28 -0.22 0.5 -0.32 -0.21 0.14 Bacia_Metropolitana
In [6]:
# Formata o nome das regiões hidrográficas para coincidir com os do Json (arquivo com os shapes das regiões) e separa posição em Lat e Lon.

df = df.assign(
    regiao_hidro = df.regiao_hidro.apply(lambda x: x.replace("_", " ")),
    lat = df.posicao.apply(lambda x: eval(x)[0]),
    lon = df.posicao.apply(lambda x: eval(x)[1])
).drop([], )
In [7]:
# Transformando a data em datetime.

pd.to_datetime(df['data'], format="%Y-%m-%d")
Out[7]:
0       1981-01-01
1       1981-01-01
2       1981-01-01
3       1981-01-01
4       1981-01-01
           ...    
96325   2022-02-01
96326   2022-02-01
96327   2022-02-01
96328   2022-02-01
96329   2022-02-01
Name: data, Length: 96330, dtype: datetime64[ns]
In [8]:
# Selecionando as variaveis a serem trabalhadas.

df_reduced = df[['data','posicao','pr','umidade','regiao_hidro', 'nino3', 'atlgrad','vento_vertical','lat','lon']]
df_reduced = df_reduced.set_index(['data'])
df_reduced.dtypes
Out[8]:
posicao            object
pr                float64
umidade           float64
regiao_hidro       object
nino3             float64
atlgrad           float64
vento_vertical    float64
lat               float64
lon               float64
dtype: object
In [9]:
# Selecionando o periodo de tempo a ser utilizado como treino.

df_reduced = df_reduced['1981-01':'2010-12']
In [10]:
# Criando colunas de mes e ano para analises.

df_reduced['ano'] = pd.to_datetime(df_reduced.index).strftime("%Y")
df_reduced['mes'] = pd.to_datetime(df_reduced.index).strftime("%m")
df_reduced.head()
Out[10]:
posicao pr umidade regiao_hidro nino3 atlgrad vento_vertical lat lon ano mes
data
1981-01-01 (-4.75, -39.25) 68.92 74.14 Bacia Metropolitana -0.63 0.5 -0.01 -4.75 -39.25 1981 01
1981-01-01 (-4.75, -39.0) 59.98 73.94 Bacia Metropolitana -0.63 0.5 -0.02 -4.75 -39.00 1981 01
1981-01-01 (-4.75, -38.75) 54.32 73.52 Bacia Metropolitana -0.63 0.5 -0.03 -4.75 -38.75 1981 01
1981-01-01 (-4.75, -38.5) 34.91 73.19 Bacia Metropolitana -0.63 0.5 -0.02 -4.75 -38.50 1981 01
1981-01-01 (-4.5, -39.0) 60.35 74.28 Bacia Metropolitana -0.63 0.5 0.07 -4.50 -39.00 1981 01

2 - ANALISE EXPLORATORIA DOS DADOS¶


2.1 - Relatorio Geral usando o Pandas Profiling¶

Utilizaremos o Pandas Profiling para obter estatisticas sobre as variaveis, interaçoes entre essas, correlaçoes e analise de dados faltantes

In [11]:
profile = ProfileReport(df[df['data']>'2010'], title="Pandas Profiling Report")

# Gera o relatorio dentro do notebook 
profile.to_notebook_iframe()

# Gera um arquivo html do relatorio
profile.to_file("df_treino_profile_report.html")
Summarize dataset:   0%|          | 0/5 [00:00<?, ?it/s]
Generate report structure:   0%|          | 0/1 [00:00<?, ?it/s]
Render HTML:   0%|          | 0/1 [00:00<?, ?it/s]
Export report to file:   0%|          | 0/1 [00:00<?, ?it/s]

2.2 - Analises gerais das regioes hidrograficas¶

Primeiramente, analisaremos o dataset sob uma otica geral, verificando os aspectos fisicos de todas as regioes hidrograficas do Ceara juntas.

2.2.1 - Distribuicao de precipitacao por mes¶

In [12]:
# Gerando um boxplot da distribuição de precipitação mensal 

df_reduced['pr_tratado'] = df_reduced['pr'].astype(float)
df_reduced['umidade_tratado'] = df_reduced['umidade'].astype(float)
fig, ax = plt.subplots(figsize=(12,7))
sns.boxplot(data=df_reduced,y='pr_tratado',x='mes',showfliers=True)
plt.ylabel("Precipitação")
plt.xlabel("Mês")
plt.title("Distribuição de Precipitação Mensal")
plt.show()

Comentario: Conforme o grafico de caixas acima, podemos verificar uma forte presença de outliers na amostra, isto e, ainda que haja meses com precipitacoes maiores e menores, ha dias dentro desses meses em que nao sao seguidos os padroes do periodo.

In [13]:
# Gerando um barplot com as médias mensais de precipitação.

df_red_mean = df_reduced.groupby('mes')['pr_tratado'].mean().reset_index()
fig, ax = plt.subplots(figsize=(10,6))

sns.barplot(data=df_red_mean, x='mes', y='pr_tratado', color="b")
ax.set_title("Precipitação Média Mensal")
ax.set_xlabel("Mês")
ax.set_ylabel("Precipitação")
plt.show()

Comentario: Conforme os graficos acima, podemos visualizar que os meses de fevereiro, março e abril sao os de maior precipitacao da regiao selecionada, assim como os meses de julho, agosto, setembro, outubro e novembro sao os de menor. Iremos verificar mais afundo, evidenciando os maximos e minimos em termos de precipitacao.

In [14]:
# Calculando as precipitacoes maximas e minimas mensais.

maximos = df_reduced.groupby('mes')['pr_tratado'].max()
minimos = df_reduced.groupby('mes')['pr_tratado'].min()
In [15]:
# Comparando as maximas e minimas por mes.

fig, ax = plt.subplots(1,2, figsize=(15,6))
sns.barplot(data=maximos.reset_index(), x='mes', y='pr_tratado', ax=ax[0], color="g")
ax[0].set_title("Precipitação Máxima Mensal")
ax[0].set_xlabel("Mês")
ax[0].set_ylabel("Precipitação")
sns.barplot(data=minimos.reset_index(), x='mes', y='pr_tratado', ax=ax[1], color="g")
ax[1].set_title("Precipitação Mínima Mensal")
ax[1].set_xlabel("Mês")
ax[1].set_ylabel("Precipitação")
plt.show()

2.2.2 - Distribuicao de precipitacao por ano¶

In [16]:
# Analisando dados de precipitacao por ano

fig, ax = plt.subplots(figsize=(21,8))
sns.boxplot(data=df_reduced,y='pr_tratado',x='ano',showfliers=True)
plt.ylabel("Precipitação")
plt.xlabel("Ano")
plt.title("Distribuição anual de chuvas")
plt.show()

Comentario: Atraves dessa visualizacao, podemos verificar que 1985 foi o ano de maior precipitacao da amostra, porem a maior precipitacao registrada pontualmente foi em 2001. Adicionalmente, em 1983 houve a menor precipitacao ao longo de 30 anos.

In [17]:
# Verificando a precipitacao maxima mensal de 2001.

df_2001 = df_reduced['2001-01-01':'2001-12-31']
df_2001_max = df_2001.groupby('mes').max()
fig, ax = plt.subplots(figsize=(10,6))
sns.barplot(data=df_2001_max.reset_index(), x='mes', y='pr_tratado', ax=ax, color="r")
ax.set_title("Precipitação Máxima Mensal")
ax.set_xlabel("Mês")
ax.set_ylabel("Precipitação")
plt.show()

Comentario: Como em 2001 verificamos a maior precipitacao pontual, nos restava verificar em que mes isto ocorreu, portanto, com o grafico acima, entendemos que foi em abril de 2001. Espera-se que a precipitacao mínima de 1983 esteja entre os meses de menores precipitacoes: agosto, setembro, outubro.

In [18]:
# Verificando a precipitacao minima mensal de 1983.

df_1983 = df_reduced['1983-01-01':'1983-12-31']
df_1983_min = df_1983.groupby('mes').min()
fig, ax = plt.subplots(figsize=(10,6))
sns.barplot(data=df_1983_min.reset_index(), x='mes', y='pr_tratado', ax=ax, color="r")
ax.set_title("Precipitação Mínima Mensal")
ax.set_xlabel("Mês")
ax.set_ylabel("Precipitação")
plt.show()

Comentario: Como o esperando, a precipitacao minima registrada em 30 anos encontra-se entre os meses de agosto a outubro, de 1983. O que tambem segue a linha da amostra.

In [19]:
# Verificando a relacao entre precipitacao e umidade ao longo dos anos

df_reduced_lines = df_reduced.groupby('ano').mean()

fig, ax = plt.subplots(figsize=(18,8))
sns.lineplot(data=df_reduced_lines, x='ano', y='pr_tratado')
sns.lineplot(data=df_reduced_lines, x='ano',y='umidade_tratado')
ax.legend(['Precipitação','Umidade'])
ax.set_xlabel("Ano")
ax.set_ylabel("Precipitação")
ax.set_title("Precipitação e Umidade média ao longo dos anos.")
plt.show()

Comentario: Partindo para a verificacao de relacao entre variaveis, analisamos o comportamento das variaveis de precipitacao e umidade ao longo dos anos. E possivel visualizar uma correlacao entre elas, no entanto, verifica-se que o coeficiente de angulacao das curvas sao bem distantes. Adicionalmente, atraves deste grafico podemos evidenciar os anos de maiores e menores precipitacoes medias. Em 1985, 1989 e 2009 tivemos os maiores registros de precipitacoes medias, enquanto que em 1983, 1993 e 1998, as menores.

In [20]:
# Comparando umidade x precipitacao

fig, ax = plt.subplots(figsize=(10,10))
sns.scatterplot(data=df_reduced_lines, x='umidade_tratado', y='pr_tratado', hue='ano', palette='crest')
ax.set_xlabel("Umidade")
ax.set_ylabel("Precipitação")
ax.set_title("Relação entre Umidade e Precipitação")
plt.show()

Comentario: Conforme podemos verificar acima, quanto maior a precipitacao, maior a umidade. Dessa forma, ha uma relacao entre as variaveis.

2.3 - Analises por regiao hidrografica¶

A seguir, analisamos as variaveis estudadas por regiao hidrografica do Ceara.

2.3.1 - Precipitacao media¶

In [21]:
df_reduced_regions = df_reduced.groupby('regiao_hidro').mean()

fig, ax = plt.subplots(figsize=(10,6))
sns.barplot(data=df_reduced_regions.reset_index().sort_values(by='pr_tratado',ascending=False), x='pr_tratado', y='regiao_hidro', ax=ax, color="c")
ax.set_title("Precipitação Média por Região")
ax.set_xlabel("Precipitação")
ax.set_ylabel("Região Hidrográfica")
plt.show()

Comentario: Conforme o grafico acima, podemos verificar que a regiao da Bacia do Coreau possui a maior precipitacao media dentre as regioes estudadas, enquanto que a Bacia dos Sertoes de Crateus apresentou a menor.

2.3.2 - Umidade media¶

In [22]:
fig, ax = plt.subplots(figsize=(10,6))
sns.barplot(data=df_reduced_regions.reset_index().sort_values(by='umidade_tratado',ascending=False), x='umidade_tratado', y='regiao_hidro', ax=ax, color="c")
ax.set_title("Umidade Média por Região")
ax.set_xlabel("Umidade")
ax.set_ylabel("Região Hidrográfica")
plt.show()

Comentario: No entanto, a Bacia dos Sertoes de Crateus apresentou uma das maiores umidades dentre as regioes estudadas, o que sugere que as variaveis sao correlacionadas, mas existem outros fatores necessarios para que haja de fato a presença de chuvas. A Bacia do Acarau apresentou a maior umidade, conforme o grafico acima.

2.3.3 - Precipitacao media por mes em cada regiao hidrografica¶

In [23]:
df_reduced_regions_month = df_reduced.groupby(['regiao_hidro','mes']).mean()
df_reduced_regions_month = pd.DataFrame(df_reduced_regions_month).reset_index()
df_reduced_regions_month.head(10)
Out[23]:
regiao_hidro mes pr umidade nino3 atlgrad vento_vertical lat lon pr_tratado umidade_tratado
0 Bacia Metropolitana 01 87.221140 72.396632 0.052000 -5.000000e-03 -0.044684 -4.263158 -38.644737 87.221140 72.396632
1 Bacia Metropolitana 02 115.350000 75.640000 0.053667 3.895519e-19 -0.058491 -4.263158 -38.644737 115.350000 75.640000
2 Bacia Metropolitana 03 219.316579 80.464842 0.045667 1.866667e-02 -0.061123 -4.263158 -38.644737 219.316579 80.464842
3 Bacia Metropolitana 04 223.039474 82.410702 0.043000 2.133333e-02 -0.058526 -4.263158 -38.644737 223.039474 82.410702
4 Bacia Metropolitana 05 126.489632 80.261246 0.053000 3.500000e-02 -0.046439 -4.263158 -38.644737 126.489632 80.261246
5 Bacia Metropolitana 06 70.104649 79.278298 0.026333 2.033333e-02 -0.042000 -4.263158 -38.644737 70.104649 79.278298
6 Bacia Metropolitana 07 28.208386 76.168456 0.026667 3.733333e-02 -0.042789 -4.263158 -38.644737 28.208386 76.168456
7 Bacia Metropolitana 08 5.654123 70.571263 0.051000 2.200000e-02 -0.040421 -4.263158 -38.644737 5.654123 70.571263
8 Bacia Metropolitana 09 3.642860 64.052123 0.040667 2.033333e-02 -0.023333 -4.263158 -38.644737 3.642860 64.052123
9 Bacia Metropolitana 10 3.754123 60.673105 0.024667 8.333333e-03 -0.000386 -4.263158 -38.644737 3.754123 60.673105
In [24]:
g = sns.FacetGrid(df_reduced_regions_month, col='regiao_hidro', col_wrap = 3, height=5)
g.map(sns.barplot,"mes","pr_tratado", color='purple', order=None)
g.set_axis_labels("Mês","Precipitação")
g.set_titles(col_template = '{col_name}')
plt.show()

Comentario: Conforme verificamos acima, a Bacia do Coreau apresentou a maior precipitacao media durante o mes de março, o que e corente com as visualizacoes gerais.

2.3.4 - Precipitacao maxima por mes em cada regiao hidrografica¶

In [25]:
df_2001_month = df_2001.groupby(['regiao_hidro','mes']).max()
df_2001_month = pd.DataFrame(df_2001_month).reset_index()
df_2001_month.head()
Out[25]:
regiao_hidro mes posicao pr umidade nino3 atlgrad vento_vertical lat lon ano pr_tratado umidade_tratado
0 Bacia Metropolitana 01 (-4.75, -39.25) 116.31 71.47 -0.31 -0.35 0.03 -3.5 -38.0 2001 116.31 71.47
1 Bacia Metropolitana 02 (-4.75, -39.25) 102.11 74.59 -0.18 -0.19 -0.04 -3.5 -38.0 2001 102.11 74.59
2 Bacia Metropolitana 03 (-4.75, -39.25) 206.86 82.07 0.10 0.16 -0.03 -3.5 -38.0 2001 206.86 82.07
3 Bacia Metropolitana 04 (-4.75, -39.25) 737.14 86.46 -0.02 -0.18 -0.00 -3.5 -38.0 2001 737.14 86.46
4 Bacia Metropolitana 05 (-4.75, -39.25) 73.45 76.25 -0.05 -0.31 0.05 -3.5 -38.0 2001 73.45 76.25
In [26]:
g = sns.FacetGrid(df_2001_month, col='regiao_hidro',col_wrap = 3, height=5)
g.map(sns.barplot,"mes","pr_tratado", color='purple', order=None)
g.set_axis_labels("Mês","Precipitação")
g.set(yticks = [50,100,150,200,250,300,350,400,450,500,550,600,650,700,750])
g.set_titles(col_template = '{col_name}')
plt.show()

Comentario: Em relacao as precipitacoes maximas, visualizamos que esta ocorreu em abril de 2001 e, conforme os graficos acima, o ocorrido foi na Bacia da Regiao Metropolitana.

2.3.5 - Precipitacao minima por mes em cada regiao hidrografica¶

In [27]:
df_1983_month = df_1983.groupby(['regiao_hidro','mes']).min()
df_1983_month = pd.DataFrame(df_1983_month).reset_index()
df_1983_month.head()
Out[27]:
regiao_hidro mes posicao pr umidade nino3 atlgrad vento_vertical lat lon ano pr_tratado umidade_tratado
0 Bacia Metropolitana 01 (-3.5, -39.0) 3.25 63.89 3.07 -0.32 -0.09 -4.75 -39.25 1983 3.25 63.89
1 Bacia Metropolitana 02 (-3.5, -39.0) 49.79 72.09 2.43 0.05 -0.15 -4.75 -39.25 1983 49.79 72.09
2 Bacia Metropolitana 03 (-3.5, -39.0) 52.66 74.52 1.93 0.80 -0.14 -4.75 -39.25 1983 52.66 74.52
3 Bacia Metropolitana 04 (-3.5, -39.0) 36.13 72.66 1.86 0.94 -0.14 -4.75 -39.25 1983 36.13 72.66
4 Bacia Metropolitana 05 (-3.5, -39.0) 19.18 69.51 2.05 0.99 -0.14 -4.75 -39.25 1983 19.18 69.51
In [28]:
g = sns.FacetGrid(df_1983_month, col='regiao_hidro', col_wrap = 3, height=5)
g.map(sns.barplot,"mes","pr_tratado", color='purple', order=None)
g.set_axis_labels("Mês","Precipitação")
g.set_titles(col_template = '{col_name}')
plt.show()

Comentario: No que tange a precipitaçao minima, vimos que esta se dava em 1983, entre os meses de agosto a outubro. Verificando as precipitacoes minimas por regiao, concluimos que a Bacia do Litoral foi a regiao em que se choveu menos. No entanto, e possivel visualizar que em todas as regioes o periodo de seca mencionado foi bem acentuado.

2.3.6 - Comparacao entre umidade e precipitacao por regiao hidrografica¶

In [29]:
df_reduced_regions_month_median = df_reduced.groupby(['regiao_hidro','mes']).median()
df_reduced_regions_month_median = pd.DataFrame(df_reduced_regions_month_median).reset_index()
df_reduced_regions_month_median['umidade_tratado'] = df_reduced_regions_month_median['umidade_tratado'].apply(lambda x: f'{x:.1f}').astype('float64')
df_reduced_regions_month_median.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 144 entries, 0 to 143
Data columns (total 11 columns):
 #   Column           Non-Null Count  Dtype  
---  ------           --------------  -----  
 0   regiao_hidro     144 non-null    object 
 1   mes              144 non-null    object 
 2   pr               144 non-null    float64
 3   umidade          144 non-null    float64
 4   nino3            144 non-null    float64
 5   atlgrad          144 non-null    float64
 6   vento_vertical   144 non-null    float64
 7   lat              144 non-null    float64
 8   lon              144 non-null    float64
 9   pr_tratado       144 non-null    float64
 10  umidade_tratado  144 non-null    float64
dtypes: float64(9), object(2)
memory usage: 12.5+ KB
In [30]:
g = sns.FacetGrid(df_reduced_regions_month_median, col='regiao_hidro',col_wrap = 3, height=5)
g.map(sns.scatterplot,"umidade_tratado","pr_tratado", color='blue')
g.set_axis_labels("Umidade","Precipitação")
g.set_titles(col_template = '{col_name}')
plt.show()

Comentario: A partir dos graficos acima, notamos que as regioes das Bacias de Coreau e da Serra da Ibiapaba tem as maiores medianas de precipitacao nos maiores registros de umidade. Tratam-se de duas regioes serranas, o que pode justificar esta umidade elevada. Alem disso, observa-se uma possivel relacao exponencial entre umidade e precipitacao.

2.3.7 - Comparacao entre o indice de La Nina/El Nino e precipitacao por regiao hidrografica¶

In [31]:
df_reduced_regions_month_median['nino3'].value_counts()
Out[31]:
-0.155    12
-0.015    12
-0.075    12
-0.120    12
-0.130    12
-0.100    12
 0.010    12
 0.040    12
-0.090    12
-0.145    12
-0.305    12
-0.280    12
Name: nino3, dtype: int64
In [32]:
g = sns.FacetGrid(df_reduced_regions_month_median, col='regiao_hidro',col_wrap = 3, height=5)
g.map(sns.scatterplot,"nino3","pr_tratado", color='blue')
g.set_axis_labels("La Niña/El Niño","Precipitação")
g.set_titles(col_template = '{col_name}')
g.set(xticks = [-0.400,-0.300, -0.200,-0.100, 0.00, 0.100, 0.200, 0.300, 0.400])
plt.show()

Comentario: Analisando os dados do indicador La Nina/El Nino, percebemos que, para todas as regioes, os valores entre -0.2 e 0.0 tem valores maiores de precipitacao. Esta correlacao nao ocorre de forma direta, porem podemos analisa-la de maneira mais profunda ao buscar informacoes na literatura, a qual aponta que a influencia de La Nina/El Nino ocorre 3 meses depois do fenomeno.

2.3.8 - Comparacao entre umidade e temperatura oceanica¶

In [33]:
g = sns.FacetGrid(df_reduced_regions_month_median, col='regiao_hidro',col_wrap = 3, height=5)
g.map(sns.scatterplot,"atlgrad","umidade_tratado", color='blue')
g.set_axis_labels("Tempertura oceânica","Umidade")
g.set_titles(col_template = '{col_name}')
plt.show()

Comentario: A principio, imaginamos que haveria uma correlacao entre a temperatura oceanica e a umidade mais explicita. Usamos o dado de 'atlgrad', que representa um gradiente de temperatura entre os Oceanos Atlantico e Pacifico. Porem, observamos que essa relacao pode ser fraca e apenas conseguimos verificar que com o gradiente negativo as precipitacoes podem ser favorecidas.

2.3.9 - Comparacao entre umidade e vento vertical¶

In [34]:
fig = sns.relplot(data = df_reduced_regions_month, 
            x = 'umidade', 
            y = 'vento_vertical', 
            col = 'regiao_hidro',
            col_wrap = 3, 
            kind = 'scatter')
fig.set_xlabels('Umidade')
fig.set_ylabels('Vento Vertical')
fig.set_titles(col_template = '{col_name}')
plt.show()

Comentario: Observando os graficos acima, notamos que existem relacoes diferentes entre o vento vertical e a umidade nas diferentes bacias. As bacias Metropolitana, Do Litoral, Coreau e da Serra da Ibiapaba apresentam uma relacao negativa, enquanto nas bacias do Acarau e Alto Jaguaribe apresentam uma relacao positiva.

2.3.10 - Obtendo a media da precipitacao das Regioes Hidrograficas por mes¶

In [35]:
regioes_pr_mean = df_reduced.groupby(['regiao_hidro','mes'])['pr'].mean().reset_index()
regioes_pr_mean
Out[35]:
regiao_hidro mes pr
0 Bacia Metropolitana 01 87.221140
1 Bacia Metropolitana 02 115.350000
2 Bacia Metropolitana 03 219.316579
3 Bacia Metropolitana 04 223.039474
4 Bacia Metropolitana 05 126.489632
... ... ... ...
139 Bacia dos Sertões de Crateús 08 3.412000
140 Bacia dos Sertões de Crateús 09 2.618359
141 Bacia dos Sertões de Crateús 10 3.180641
142 Bacia dos Sertões de Crateús 11 6.519692
143 Bacia dos Sertões de Crateús 12 29.601618

144 rows × 3 columns

In [36]:
# Formata os meses por nome

regioes_pr_mean['mes'] = regioes_pr_mean['mes'].apply(lambda x: dt.strptime(x, "%m").strftime("%b"))
In [37]:
regioes_pr_mean
Out[37]:
regiao_hidro mes pr
0 Bacia Metropolitana Jan 87.221140
1 Bacia Metropolitana Feb 115.350000
2 Bacia Metropolitana Mar 219.316579
3 Bacia Metropolitana Apr 223.039474
4 Bacia Metropolitana May 126.489632
... ... ... ...
139 Bacia dos Sertões de Crateús Aug 3.412000
140 Bacia dos Sertões de Crateús Sep 2.618359
141 Bacia dos Sertões de Crateús Oct 3.180641
142 Bacia dos Sertões de Crateús Nov 6.519692
143 Bacia dos Sertões de Crateús Dec 29.601618

144 rows × 3 columns

2.3.11 - Mapa Cloropletico com a Media das Precipitacoes por Regiao Hidrografica¶

In [38]:
fig = px.choropleth(regioes_pr_mean, geojson=baciasCE, color="pr",
                    locations="regiao_hidro", featureidkey="properties.nome_da_bacia",
                    projection="mercator", color_continuous_scale="Cividis_r",
                    animation_frame ="mes"
                   )
fig.update_geos(fitbounds="locations", visible=False)
fig.update_layout(title_text='Mapa Cloroplético do Estado do Ceará, com a Média das Precipitações por Mês por Bacia Hidrográfica',
                  height=600, margin={"r":0,"t":35,"l":0,"b":0}
                 )
fig.layout.updatemenus[0].buttons[0].args[1]["frame"]["duration"] = 2000
fig.show()

Comentario: Observando o mapa acima, notamos que a Bacia do Salgado possui a maior precipitacao media para o mes de janeiro, seguido da Bacia do Coreau, enquanto a Bacia do Litoral e a Bacia do Banabuiu apresetam as menores precipitacoes medias para este mes. Entre abril e julho, e possível observar que a precipitação media tende a ser maior nas regioes mais ao norte do Estado e proximas ao Litoral. Entre agosto e e novembro, observamos uma media de precitacao baixa para todas as regioes. A precipitacao media entao começar a aumentar em dezembro, principalmente na Bacia do Salgado e do Alto Jaguaribe.

In [ ]: